A quick tour of Jupyter Notebook

This tour will work a little better in interactive mode, so it'll be better if you get IPython notebook installed and running. You can start it from a terminal by running

jupyter notebook

Running a Cell

First, we need to explain how to run cells. Try to run the cell below!


In [ ]:
import pandas as pd

print("Hi! This is a cell. Press the ▶ button above to run it")

You can also run a cell with Ctrl+Enter or Shift+Enter. Experiment a bit with that.

Help

One of the most useful things about Jupyter notebook is its tab completion.

Try this: click just after read_csv( in the cell below and press Shift+Tab 4 times, slowly


In [ ]:
pd.read_csv(

After the first time, you should see this:

After the second time:

After the fourth time, a big help box should pop up at the bottom of the screen, with the full documentation for the read_csv function:

I find this amazingly useful. I think of this as "the more confused I am, the more times I should press Shift+Tab". Nothing bad will happen if you tab complete 12 times.

Tab Completion

Okay, let's try tab completion for function names!


In [ ]:
pd.r

You should see this:

Writing code

Writing code in the notebook is pretty normal.


In [ ]:
def print_10_nums():
    for i in range(10):
        print(i, end=' ')

In [ ]:
print_10_nums()

Saving

As of the latest stable version, the notebook autosaves. You should use the latest stable version. Really.

Magic functions

Jupyter has all kinds of magic functions. Here's an example of comparing sum() with a list comprehension to a generator comprehension using the %time magic.


In [ ]:
%time sum([x for x in range(100000)])

In [ ]:
%time sum(x for x in range(100000))

Magic Reference

The magics I use most are %time and %prun for profiling. You can run %magic to get a list of all of them, and %quickref for a reference sheet.


In [ ]:
%quickref

Other Languages

You can also do nutty things like run Perl code in the notebook with cell magics. This is especially cool for things like Cython code, where you can try out Cython really fast with the %%cython magic (you'll need to install it).


In [ ]:
%%perl

$_ = "whoa, python!";
s/python/perl/;
print

Auto Reload Modules

When prototyping modules we get in the this sort of workflow:

  • make the module
  • import it in a notebook
  • test it
  • fix it
  • run it again in a notebook

With special intervention, the module will not reload.

Example

There is a file called foo.py in this directory and we want to work on it as a module.


In [ ]:
!cat foo.py

In [ ]:
import foo

foo.some_function()

Edit Module

Open foo.py in an editor and change some_function to return 43


In [ ]:
foo.some_function()

Didn't Work!!!

Jupyter didn't see that we changed the module. The hard way to handle this is to restart the kernel. The easier way is to use the %autoreload magic function.

For this to work, we will have to restart the kernel.


In [ ]:
%load_ext autoreload

%autoreload 1

In [ ]:
import foo

foo.some_function()

Edit Module

Open foo.py in an editor and change some_function to return 43.


In [ ]:
foo.some_function()

Plot in Notebook

By default if you create a matplot lib plot in the notebook, the plot will not render. You have to use %matplotlib inline in order to have the plot render in the output cell.


In [ ]:
import pylab as plt
%matplotlib inline
plt.plot(range(10),range(10))

That's it for now!